/*
 * @Description: 匹配基类
 * @Author: Sang Hao
 * @Date: 2021-09-15 17:09:27
 * @LastEditTime: 2021-10-27 11:31:25
 * @LastEditors: Sang Hao
 */

#ifndef LIDAR_SLAM_MODELS_REGISTRATION_REGISTRATION_INTERFATE_HPP_
#define LIDAR_SLAM_MODELS_REGISTRATION_REGISTRATION_INTERFATE_HPP_

#include <yaml-cpp/yaml.h>
#include <Eigen/Dense>
#include "lidar_slam/sensor_data/cloud_data.hpp"

namespace lidar_slam {
class RegistrationInterface {
public:
	virtual ~RegistrationInterface() = default;
	virtual bool SetInputTarget(const CloudData::CLOUD_PTR& input) = 0;
	virtual bool ScanMatch(	const CloudData::CLOUD_PTR& input_source,
							const Eigen::Matrix4f& predict_pose,
							CloudData::CLOUD_PTR& result_cloud_ptr,
							Eigen::Matrix4f& result_pose) = 0;
	virtual float GetFitnessScore() = 0;
};
}

#endif